package action.RDD基本转换操作4

import org.apache.spark.{SparkConf, SparkContext}

/**
  * def subtract(other: RDD[T]): RDD[T]
  * def subtract(other: RDD[T], numPartitions: Int): RDD[T]
  * def subtract(other: RDD[T], partitioner: Partitioner)(implicit ord: Ordering[T] = null): RDD[T]
  *
  * 该函数类似于intersection，但返回在RDD中出现，并且不在otherRDD中出现的元素，不去重。
  * 参数含义同intersection
  *
  * @author wdmcode@aliyun.com
  * @version 1.0.0
  * @date 2018/11/8
  */
object SparkSubtract {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setAppName("SparkParallelize")
    conf.setMaster("local[2]")

    val spark = new SparkContext(conf)

    val rdd = spark.parallelize(List(1, 2, 2, 3))

    val rdd2 = spark.parallelize(List(3, 4))

    val rddUnion = rdd.subtract(rdd2)
    // 返回rdd1 在rdd2 中不存在的元素 并且不去重
    // rddUnion: Array[Int] = Array(1, 2, 2)
  }
}
